from haystack import indexes

from goods.models import SKU


class SKUIndex(indexes.SearchIndex, indexes.Indexable):
    # text的作用
    # 明确在搜索引擎中索引数据包含哪些字段
    # 字段也会作为前端进行检索查询时关键词的参数名
    # 指明类型是文档对模型类多个字段进行索引,
    # 用模板的方式进行指明, 去模板目录中层级查找
    text = indexes.CharField(document=True, use_template=True)

    # 要作为序列化器返回,所以要添加某些字段
    #  model_attr代表从SKU的某些字段
    id = indexes.IntegerField(model_attr='id')
    name = indexes.CharField(model_attr='name')
    price = indexes.DecimalField(model_attr='price')
    default_image_url = indexes.CharField(model_attr='default_image_url')
    comments = indexes.IntegerField(model_attr='comments')

    def get_model(self):
        # 指明查询索引的模型
        return SKU

    def index_queryset(self, using=None):
        # 指明哪些查询可以查询,上架的物品可以查询
        return SKU.objects.filter(is_launched=True)

# 生成索引的方式:python manage.py rebuild_index